package com.css.fxfzcpxx.modules.courseManage.repository;

import com.css.fxfzcpxx.modules.categoryView.param.QueParam;
import com.css.fxfzcpxx.modules.categoryView.vo.CategoryViewVo;
import com.css.fxfzcpxx.modules.courseManage.entity.CourseManage;
import com.css.fxfzcpxx.modules.courseManage.entity.TestPaperTemplate;
import com.css.fxfzcpxx.modules.courseManage.entity.TestPaperTemplateRule;
import com.css.fxfzcpxx.modules.courseManage.param.CourseManageParam;
import com.css.fxfzcpxx.modules.courseManage.vo.HistoryTestVO;
import com.css.fxfzcpxx.modules.courseManage.vo.TypeManageNumVO;
import com.css.fxfzcpxx.modules.questionData.entity.UserTestHistory;
import com.css.fxfzcpxx.modules.questionData.vo.FractionalCurveVO;
import com.css.fxfzcpxx.modules.questionData.vo.UserTestHistoryVO;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface CourseManageRepository {
    Map<String, Object> getPage(int curPage, int pageSize, CourseManageParam param);

    void save(CourseManage courseManage);

    void saveTestPaperTemplate(TestPaperTemplate testPaperTemplate);

    void saveTestPaperTemplateRule(TestPaperTemplateRule testPaperTemplateRule);

    void updateReleaseStatusById(List<String> id, Date date, String toString);

    List<String> queryExerciseId(String ids);

    void delete(List<String> asList);

    void deleteTemplate(List<String> list);

    void deleteTemplateRule(List<String> list);

    List<CourseManage> queryByParam(List<String> asList);

    void upDateTestPaperTemplate(TestPaperTemplate testPaperTemplate);

    void upDateTestPaperTemplateRule(TestPaperTemplateRule testPaperTemplateRule);

    void updateById(CourseManage param);

    CourseManage findById(String id);

    TestPaperTemplate findTemplateById(String exerciseId);

    List<TestPaperTemplateRule> findTemplateRuleById(String exerciseId);

    void deleteTemplateAndRule(String id);

    List<TypeManageNumVO> getTypeNum(String typeName);

    List<HistoryTestVO> getHistoryTest(String id);

    Map<String, Object> getOnlinePage(int curPage, int pageSize, String userID);

    List<UserTestHistory> getTestListByCourseId(String courseId,String userID);

    List<UserTestHistoryVO> getRanking();

    List<FractionalCurveVO> getFractionalCurve();

    String getUserScore(String userID);

    List<TypeManageNumVO> getTypeNumByTypeId(String typeId);

    List<CategoryViewVo> getData(QueParam queParam);

    Integer getDownload(String unit);
}
